1. Field of Invention
The present invention relates generally to methods and apparatus for use in application builder tools More particularly, the present invention relates to methods and apparatus for inspecting software components.
2. Background
As computer usage becomes increasingly widespread, the desire for custom computer applications which are specific to the needs of a particular user is also increasing. The use of visual builder tools, or application builder tools, enables computer applications to be readily created. Builder tools generally include standard sets of software modules which may be interlinked to create custom-built applications.
Many visual based applications builder tools, as for example Visual Basic available from Microsoft, Inc. of Redmond, Wash., have a graphical user interface which includes a "toolbox", a "form window", and a "property sheet". A toolbox typically contains icons which represent different classes of components, or software modules. Alternatively, the toolbox may contain text which represents different classes of components. It should be appreciated that many different classes of components may exist. By way of example, different classes may include complex components, e.g., database viewers, and simple components, e.g., buttons. A form window is a display window in which an application may be composed. A component selected from the toolbox may be "dropped", or otherwise placed, within the form window. A property sheet displays properties, or attributes, relating to the selected component. The properties may include, but are not limited to, information relating to the size, color, and name of the selected component.
Once components are placed in the form window, the components may be linked together to create an application. In other words, an application may be graphically composed by interlinking components in the form window. In an application builder environment, as well as at runtime, it is necessary to determine which methods, properties, and events are supported by a given class, or, more specifically, a component which is a part of the given class. A method is generally a procedure which is accessible to components other than the component with which the procedure is associated. A property may be defined as an attribute that is associated with a component. An example of a property, as previously mentioned, is the size of a component. An event is generally a mechanism which enables a component, e.g., a source object, to notify other components, e.g., listener objects, of state changes.
The process of identifying the methods, properties, and events which are supported by a particular class, or component, is conventionally considered to be an inspection of the component. It should be appreciated that the component itself is not typically inspected in order to identify the methods, properties, and events which are supported by the component. Rather, a component descriptor file that is associated with the component is inspected.
Components are typically created using a standard programming language, as for example the C++ programming language, while component descriptor files are usually created using a specification language such as an Interface Definition Language (IDL). A component descriptor file is a file which identifies methods, properties, and events that are supported by the component with which the component descriptor file is associated. Therefore, in order for a programmer to both create a component and provide a description of that component, the programmer must master both a standard programming language, e.g., C++, and an interface definition language. This process of mastering two languages often proves to be time-consuming and, as a result, inefficient. Further, the component description must be compiled down to a type library which describes the implementation of the component. That is, a binary description for the component must be created such that different portions of a program or an application may inspect the binary description to determine the implementation of the component. This binary description must then be updated each time a component is changed, which is time-consuming and, therefore, often proves to inefficient. What is needed, therefore, is an efficient apparatus and process which allows application builder tools to readily identify the methods, properties, and events which are supported by a particular class.